package com.sjgtw.cloud.system.service.impl;

import org.springframework.stereotype.Service;
import com.sjgtw.cloud.common.core.utils.StringUtils;
import com.sjgtw.cloud.system.api.model.LoginUser;
import com.sjgtw.cloud.system.domain.SysUserOnline;
import com.sjgtw.cloud.system.service.ISysUserOnlineService;

/**
 * <p>Title: 在线用户会话管理--服务层--接口实现</p>
 * <p>Description: </p>
 * @author Admin
 * @date 2020-7-7
 */
@Service
public class SysUserOnlineServiceImpl implements ISysUserOnlineService
{
	/**
	 * 通过登录地址查询信息
	 * 
	 * @param ipaddr 登录地址
	 * @param user   用户信息
	 * @return 在线用户信息
	 */
	@Override
	public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user) {
		if (StringUtils.equals(ipaddr, user.getIpaddr())) {
			return loginUserToUserOnline(user);
		}
		return null;
	}

	/**
	 * 通过用户名称查询信息
	 * 
	 * @param userName 用户名称
	 * @param user     用户信息
	 * @return 在线用户信息
	 */
	@Override
	public SysUserOnline selectOnlineByUserName(String userName, LoginUser user) {
		if (StringUtils.equals(userName, user.getUsername())) {
			return loginUserToUserOnline(user);
		}
		return null;
	}

	/**
	 * 通过登录地址/用户名称查询信息
	 * 
	 * @param ipaddr   登录地址
	 * @param userName 用户名称
	 * @param user     用户信息
	 * @return 在线用户信息
	 */
	@Override
	public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user) {
		if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) {
			return loginUserToUserOnline(user);
		}
		return null;
	}

	/**
	 * 设置在线用户信息
	 * 
	 * @param user 用户信息
	 * @return 在线用户
	 */
	@Override
	public SysUserOnline loginUserToUserOnline(LoginUser user) {
		if (StringUtils.isNull(user)) {
			return null;
		}
		SysUserOnline sysUserOnline = new SysUserOnline();
		sysUserOnline.setTokenId(user.getToken());
		sysUserOnline.setUserName(user.getUsername());
		sysUserOnline.setIpaddr(user.getIpaddr());
		sysUserOnline.setLoginTime(user.getLoginTime());
		return sysUserOnline;
	}
}
